package dao

import (
	"common"
	"context"
	"epai/internal/model"
	"errors"
	"gorm.io/gorm"
)

// AddTag 增加一个标签
func AddTag(ctx context.Context, db *gorm.DB, name string) (*model.Tag, error) {
	uuidV := common.GenerateXID()
	tag := &model.Tag{}
	// 查询是否存在
	if err := db.WithContext(ctx).Model(&model.Tag{}).Where("name = ?", name).First(&tag).Error; err != nil {
		// 如果不存在则创建
		if errors.Is(err, gorm.ErrRecordNotFound) {
			tag = &model.Tag{
				TagId: uuidV,
				Name:  name,
			}
			err := db.Create(&tag).Error
			return tag, err
		}
		return nil, err
	}
	err := db.WithContext(ctx).Model(&model.Tag{}).Create(&tag).Error
	return tag, err

}

// GetTag 获取一个标签
func GetTag(ctx context.Context, db *gorm.DB, tagId string) (*model.Tag, error) {
	tag := &model.Tag{}
	err := db.WithContext(ctx).Model(&model.Tag{TagId: tagId}).First(&tag).Error
	return tag, err
}

// GetAllTag 获取所有标签
func GetAllTag(ctx context.Context, db *gorm.DB) ([]model.Tag, error) {
	var tags []model.Tag
	err := db.WithContext(ctx).Model(&model.Tag{}).Find(&tags).Error
	return tags, err
}
